// 从 'electron' 模块导入 contextBridge，用于在渲染进程和主进程之间建立安全的通信桥梁
import { contextBridge } from 'electron';
// 从 '@electron-toolkit/preload' 模块导入 electronAPI，这是 Electron 工具包提供的预加载 API
import { electronAPI } from '@electron-toolkit/preload';

/**
 * 自定义渲染器 API 对象
 * 可以在这里定义供渲染器进程使用的自定义 API
 */
const api = {};

/**
 * 使用 `contextBridge` API 将 Electron API 暴露给渲染器进程
 * 仅在启用上下文隔离时使用 `contextBridge`，否则直接添加到 DOM 全局对象
 */
if (process.contextIsolated) {
  try {
    // 将 electronAPI 暴露给渲染器进程，通过 window.electron 访问
    contextBridge.exposeInMainWorld('electron', electronAPI);
    // 将自定义 API 对象暴露给渲染器进程，通过 window.api 访问
    contextBridge.exposeInMainWorld('api', api);
  } catch (error) {
    // 捕获并输出暴露过程中可能出现的错误
    console.error(error);
  }
} else {
  // @ts-ignore (define in dts)
  // 如果未启用上下文隔离，直接将 electronAPI 添加到 window 对象上
  window.electron = electronAPI;
  // 如果未启用上下文隔离，直接将自定义 API 对象添加到 window 对象上
  window.api = api;
}
